#include <bits/stdc++.h>
using namespace std;
#define int long long
bool isPrime(int num) {
    if (num < 2) return false;
    if (num == 2) return true;
    if (num % 2 == 0) return false;
    
    for (int i = 3; i <= std::sqrt(num); i += 2) {
        if (num % i == 0) return false;
    }
    
    return true;
}
int smallestFactor(int num) {
    // 处理小于2的数：没有大于1的因子
    if (num < 2) {
        return num; // 用-1表示无有效因子
    }
    // 2是最小的质数，先检查是否能被2整除
    if (num % 2 == 0) {
        return 2;
    }
    // 检查奇数因子，从3到sqrt(num)
    // 若存在因子，则最小的一定是质数
    for (int i = 3; i <= std::sqrt(num); i += 2) {
        if (num % i == 0) {
            return i;
        }
    }
    // 若没有找到比自身小的因子，则自身是质数，最小因子为自身
    return num;
}
int largestFactor(int num) {
    // 处理小于2的数：没有大于1的因子
    if (num <= 2) {
        return num; // 用-1表示无有效因子
    }
    // 处理质数：最大因子为1
    if (num % 2 == 0) {
        return num / 2; // 偶数的最大因子是num/2
    }
    // 检查奇数因子，从3到sqrt(num)
    for (int i = 3; i <= std::sqrt(num); i += 2) {
        if (num % i == 0) {
            return num / i; // 找到最小因子后，最大因子为num/i
        }
    }
    // 若没有找到比自身小的因子，则自身是质数，最大因子为1
    return num;
}
void solve()
{
    int n;
    cin>>n;
    vector<int> v(n+1);
    for(int i=1;i<=n;i++)
    {
        v[i]=i;
    }
    for(int i=1;i<=n;i++)
    {
        int s=largestFactor(i);
        swap(v[s],v[i]);
    }
    for(int i=1;i<=n;i++)
    {
        cout<<v[i]<<" ";
    }
    cout<<endl;
}
signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int T=1;
    cin>>T;
    while(T--)
    {
       solve();
    }
    return 0;
}